# -*- coding:utf-8 -*—

#按行数分割表格函数
#问题
#1.如果有有一个十万行表格，要录入系统，但是系统每次最多只能录入500行？
#解决问题：
#1.按照指定的行数分割表格
#2.分割出来的表格按照序号命名
import pandas as pd
import os
def SplitExcel(file,num):
    '''
    按固定的行拆分Excel文件，命名为Excel文件名-序号
    :param file: 文件名
    :param num: excel文件行数
    :return:
    '''
    file_dir='result'   #创建目录
    if os.path.isdir(file_dir):
        os.rmdir(file_dir)
    else:
        os.mkdir(file_dir)
    n = 1
    row_list = []
    df = pd.DataFrame(pd.read_excel(file, sheet_name=0))
    row_num = int(df.shape[0])  # todo:获取行数
    if num >= row_num:  #如果分割行数大于总行数，报错
        raise Exception('too much!!')
    try:
        for i in list(range(num,row_num,num)):
            row_list.append(i)
        row_list.append(row_num)  # 得到完整列表
    except Exception as e:
        print (e)

    (name,ext)=os.path.splitext(file)  #获取文件名

    for m in row_list:

        filename=os.path.join(file_dir,name+'-' + str(n) + '.xlsx')
        print(filename)
        if m <row_num:
            df_handle=df.iloc[m-num:m] #todo:获取n行之前
            print (df_handle)
            df_handle.to_excel(filename , sheet_name='sheet1',index=False)
        elif m == int(row_num):
            remainder=int(int(row_num)%num) #todo:余数
            df_handle=df.iloc[m-remainder:m] #todo:获取最后不能整除的行
            df_handle.to_excel(filename , sheet_name='sheet1', index=False)
        n = n + 1

if __name__=='__main__':
    # file= r'E:\项目相关\13.可再生能源补贴\殷甲伟\2024.01.19拆分数据\数据清单(1).xlsx'
    # SplitExcel(file,num=363)
    # print("完成")

    file= r"E:\项目相关\13.可再生能源补贴\测试数据\无法成图.xlsx"
    SplitExcel(file,num=1)
    print("完成")